↳ Prolog
↳ PrologToPiTRSProof
goal_in_gaa(A, B, C) → U1_gaa(A, B, C, s2l_in_ga(A, D))
s2l_in_ga(s(X), .(Y, Xs)) → U7_ga(X, Y, Xs, s2l_in_ga(X, Xs))
s2l_in_ga(0, []) → s2l_out_ga(0, [])
U7_ga(X, Y, Xs, s2l_out_ga(X, Xs)) → s2l_out_ga(s(X), .(Y, Xs))
U1_gaa(A, B, C, s2l_out_ga(A, D)) → U2_gaa(A, B, C, applast_in_gaa(D, B, C))
applast_in_gaa(L, X, Last) → U3_gaa(L, X, Last, append_in_gga(L, .(X, []), LX))
append_in_gga([], L, L) → append_out_gga([], L, L)
append_in_gga(.(H, L1), L2, .(H, L3)) → U6_gga(H, L1, L2, L3, append_in_gga(L1, L2, L3))
U6_gga(H, L1, L2, L3, append_out_gga(L1, L2, L3)) → append_out_gga(.(H, L1), L2, .(H, L3))
U3_gaa(L, X, Last, append_out_gga(L, .(X, []), LX)) → U4_gaa(L, X, Last, last_in_ag(Last, LX))
last_in_ag(X, .(X, [])) → last_out_ag(X, .(X, []))
last_in_ag(X, .(H, T)) → U5_ag(X, H, T, last_in_ag(X, T))
U5_ag(X, H, T, last_out_ag(X, T)) → last_out_ag(X, .(H, T))
U4_gaa(L, X, Last, last_out_ag(Last, LX)) → applast_out_gaa(L, X, Last)
U2_gaa(A, B, C, applast_out_gaa(D, B, C)) → goal_out_gaa(A, B, C)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
goal_in_gaa(A, B, C) → U1_gaa(A, B, C, s2l_in_ga(A, D))
s2l_in_ga(s(X), .(Y, Xs)) → U7_ga(X, Y, Xs, s2l_in_ga(X, Xs))
s2l_in_ga(0, []) → s2l_out_ga(0, [])
U7_ga(X, Y, Xs, s2l_out_ga(X, Xs)) → s2l_out_ga(s(X), .(Y, Xs))
U1_gaa(A, B, C, s2l_out_ga(A, D)) → U2_gaa(A, B, C, applast_in_gaa(D, B, C))
applast_in_gaa(L, X, Last) → U3_gaa(L, X, Last, append_in_gga(L, .(X, []), LX))
append_in_gga([], L, L) → append_out_gga([], L, L)
append_in_gga(.(H, L1), L2, .(H, L3)) → U6_gga(H, L1, L2, L3, append_in_gga(L1, L2, L3))
U6_gga(H, L1, L2, L3, append_out_gga(L1, L2, L3)) → append_out_gga(.(H, L1), L2, .(H, L3))
U3_gaa(L, X, Last, append_out_gga(L, .(X, []), LX)) → U4_gaa(L, X, Last, last_in_ag(Last, LX))
last_in_ag(X, .(X, [])) → last_out_ag(X, .(X, []))
last_in_ag(X, .(H, T)) → U5_ag(X, H, T, last_in_ag(X, T))
U5_ag(X, H, T, last_out_ag(X, T)) → last_out_ag(X, .(H, T))
U4_gaa(L, X, Last, last_out_ag(Last, LX)) → applast_out_gaa(L, X, Last)
U2_gaa(A, B, C, applast_out_gaa(D, B, C)) → goal_out_gaa(A, B, C)
GOAL_IN_GAA(A, B, C) → U1_GAA(A, B, C, s2l_in_ga(A, D))
GOAL_IN_GAA(A, B, C) → S2L_IN_GA(A, D)
S2L_IN_GA(s(X), .(Y, Xs)) → U7_GA(X, Y, Xs, s2l_in_ga(X, Xs))
S2L_IN_GA(s(X), .(Y, Xs)) → S2L_IN_GA(X, Xs)
U1_GAA(A, B, C, s2l_out_ga(A, D)) → U2_GAA(A, B, C, applast_in_gaa(D, B, C))
U1_GAA(A, B, C, s2l_out_ga(A, D)) → APPLAST_IN_GAA(D, B, C)
APPLAST_IN_GAA(L, X, Last) → U3_GAA(L, X, Last, append_in_gga(L, .(X, []), LX))
APPLAST_IN_GAA(L, X, Last) → APPEND_IN_GGA(L, .(X, []), LX)
APPEND_IN_GGA(.(H, L1), L2, .(H, L3)) → U6_GGA(H, L1, L2, L3, append_in_gga(L1, L2, L3))
APPEND_IN_GGA(.(H, L1), L2, .(H, L3)) → APPEND_IN_GGA(L1, L2, L3)
U3_GAA(L, X, Last, append_out_gga(L, .(X, []), LX)) → U4_GAA(L, X, Last, last_in_ag(Last, LX))
U3_GAA(L, X, Last, append_out_gga(L, .(X, []), LX)) → LAST_IN_AG(Last, LX)
LAST_IN_AG(X, .(H, T)) → U5_AG(X, H, T, last_in_ag(X, T))
LAST_IN_AG(X, .(H, T)) → LAST_IN_AG(X, T)
goal_in_gaa(A, B, C) → U1_gaa(A, B, C, s2l_in_ga(A, D))
s2l_in_ga(s(X), .(Y, Xs)) → U7_ga(X, Y, Xs, s2l_in_ga(X, Xs))
s2l_in_ga(0, []) → s2l_out_ga(0, [])
U7_ga(X, Y, Xs, s2l_out_ga(X, Xs)) → s2l_out_ga(s(X), .(Y, Xs))
U1_gaa(A, B, C, s2l_out_ga(A, D)) → U2_gaa(A, B, C, applast_in_gaa(D, B, C))
applast_in_gaa(L, X, Last) → U3_gaa(L, X, Last, append_in_gga(L, .(X, []), LX))
append_in_gga([], L, L) → append_out_gga([], L, L)
append_in_gga(.(H, L1), L2, .(H, L3)) → U6_gga(H, L1, L2, L3, append_in_gga(L1, L2, L3))
U6_gga(H, L1, L2, L3, append_out_gga(L1, L2, L3)) → append_out_gga(.(H, L1), L2, .(H, L3))
U3_gaa(L, X, Last, append_out_gga(L, .(X, []), LX)) → U4_gaa(L, X, Last, last_in_ag(Last, LX))
last_in_ag(X, .(X, [])) → last_out_ag(X, .(X, []))
last_in_ag(X, .(H, T)) → U5_ag(X, H, T, last_in_ag(X, T))
U5_ag(X, H, T, last_out_ag(X, T)) → last_out_ag(X, .(H, T))
U4_gaa(L, X, Last, last_out_ag(Last, LX)) → applast_out_gaa(L, X, Last)
U2_gaa(A, B, C, applast_out_gaa(D, B, C)) → goal_out_gaa(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
GOAL_IN_GAA(A, B, C) → U1_GAA(A, B, C, s2l_in_ga(A, D))
GOAL_IN_GAA(A, B, C) → S2L_IN_GA(A, D)
S2L_IN_GA(s(X), .(Y, Xs)) → U7_GA(X, Y, Xs, s2l_in_ga(X, Xs))
S2L_IN_GA(s(X), .(Y, Xs)) → S2L_IN_GA(X, Xs)
U1_GAA(A, B, C, s2l_out_ga(A, D)) → U2_GAA(A, B, C, applast_in_gaa(D, B, C))
U1_GAA(A, B, C, s2l_out_ga(A, D)) → APPLAST_IN_GAA(D, B, C)
APPLAST_IN_GAA(L, X, Last) → U3_GAA(L, X, Last, append_in_gga(L, .(X, []), LX))
APPLAST_IN_GAA(L, X, Last) → APPEND_IN_GGA(L, .(X, []), LX)
APPEND_IN_GGA(.(H, L1), L2, .(H, L3)) → U6_GGA(H, L1, L2, L3, append_in_gga(L1, L2, L3))
APPEND_IN_GGA(.(H, L1), L2, .(H, L3)) → APPEND_IN_GGA(L1, L2, L3)
U3_GAA(L, X, Last, append_out_gga(L, .(X, []), LX)) → U4_GAA(L, X, Last, last_in_ag(Last, LX))
U3_GAA(L, X, Last, append_out_gga(L, .(X, []), LX)) → LAST_IN_AG(Last, LX)
LAST_IN_AG(X, .(H, T)) → U5_AG(X, H, T, last_in_ag(X, T))
LAST_IN_AG(X, .(H, T)) → LAST_IN_AG(X, T)
goal_in_gaa(A, B, C) → U1_gaa(A, B, C, s2l_in_ga(A, D))
s2l_in_ga(s(X), .(Y, Xs)) → U7_ga(X, Y, Xs, s2l_in_ga(X, Xs))
s2l_in_ga(0, []) → s2l_out_ga(0, [])
U7_ga(X, Y, Xs, s2l_out_ga(X, Xs)) → s2l_out_ga(s(X), .(Y, Xs))
U1_gaa(A, B, C, s2l_out_ga(A, D)) → U2_gaa(A, B, C, applast_in_gaa(D, B, C))
applast_in_gaa(L, X, Last) → U3_gaa(L, X, Last, append_in_gga(L, .(X, []), LX))
append_in_gga([], L, L) → append_out_gga([], L, L)
append_in_gga(.(H, L1), L2, .(H, L3)) → U6_gga(H, L1, L2, L3, append_in_gga(L1, L2, L3))
U6_gga(H, L1, L2, L3, append_out_gga(L1, L2, L3)) → append_out_gga(.(H, L1), L2, .(H, L3))
U3_gaa(L, X, Last, append_out_gga(L, .(X, []), LX)) → U4_gaa(L, X, Last, last_in_ag(Last, LX))
last_in_ag(X, .(X, [])) → last_out_ag(X, .(X, []))
last_in_ag(X, .(H, T)) → U5_ag(X, H, T, last_in_ag(X, T))
U5_ag(X, H, T, last_out_ag(X, T)) → last_out_ag(X, .(H, T))
U4_gaa(L, X, Last, last_out_ag(Last, LX)) → applast_out_gaa(L, X, Last)
U2_gaa(A, B, C, applast_out_gaa(D, B, C)) → goal_out_gaa(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
LAST_IN_AG(X, .(H, T)) → LAST_IN_AG(X, T)
goal_in_gaa(A, B, C) → U1_gaa(A, B, C, s2l_in_ga(A, D))
s2l_in_ga(s(X), .(Y, Xs)) → U7_ga(X, Y, Xs, s2l_in_ga(X, Xs))
s2l_in_ga(0, []) → s2l_out_ga(0, [])
U7_ga(X, Y, Xs, s2l_out_ga(X, Xs)) → s2l_out_ga(s(X), .(Y, Xs))
U1_gaa(A, B, C, s2l_out_ga(A, D)) → U2_gaa(A, B, C, applast_in_gaa(D, B, C))
applast_in_gaa(L, X, Last) → U3_gaa(L, X, Last, append_in_gga(L, .(X, []), LX))
append_in_gga([], L, L) → append_out_gga([], L, L)
append_in_gga(.(H, L1), L2, .(H, L3)) → U6_gga(H, L1, L2, L3, append_in_gga(L1, L2, L3))
U6_gga(H, L1, L2, L3, append_out_gga(L1, L2, L3)) → append_out_gga(.(H, L1), L2, .(H, L3))
U3_gaa(L, X, Last, append_out_gga(L, .(X, []), LX)) → U4_gaa(L, X, Last, last_in_ag(Last, LX))
last_in_ag(X, .(X, [])) → last_out_ag(X, .(X, []))
last_in_ag(X, .(H, T)) → U5_ag(X, H, T, last_in_ag(X, T))
U5_ag(X, H, T, last_out_ag(X, T)) → last_out_ag(X, .(H, T))
U4_gaa(L, X, Last, last_out_ag(Last, LX)) → applast_out_gaa(L, X, Last)
U2_gaa(A, B, C, applast_out_gaa(D, B, C)) → goal_out_gaa(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
LAST_IN_AG(X, .(H, T)) → LAST_IN_AG(X, T)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
LAST_IN_AG(.(T)) → LAST_IN_AG(T)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND_IN_GGA(.(H, L1), L2, .(H, L3)) → APPEND_IN_GGA(L1, L2, L3)
goal_in_gaa(A, B, C) → U1_gaa(A, B, C, s2l_in_ga(A, D))
s2l_in_ga(s(X), .(Y, Xs)) → U7_ga(X, Y, Xs, s2l_in_ga(X, Xs))
s2l_in_ga(0, []) → s2l_out_ga(0, [])
U7_ga(X, Y, Xs, s2l_out_ga(X, Xs)) → s2l_out_ga(s(X), .(Y, Xs))
U1_gaa(A, B, C, s2l_out_ga(A, D)) → U2_gaa(A, B, C, applast_in_gaa(D, B, C))
applast_in_gaa(L, X, Last) → U3_gaa(L, X, Last, append_in_gga(L, .(X, []), LX))
append_in_gga([], L, L) → append_out_gga([], L, L)
append_in_gga(.(H, L1), L2, .(H, L3)) → U6_gga(H, L1, L2, L3, append_in_gga(L1, L2, L3))
U6_gga(H, L1, L2, L3, append_out_gga(L1, L2, L3)) → append_out_gga(.(H, L1), L2, .(H, L3))
U3_gaa(L, X, Last, append_out_gga(L, .(X, []), LX)) → U4_gaa(L, X, Last, last_in_ag(Last, LX))
last_in_ag(X, .(X, [])) → last_out_ag(X, .(X, []))
last_in_ag(X, .(H, T)) → U5_ag(X, H, T, last_in_ag(X, T))
U5_ag(X, H, T, last_out_ag(X, T)) → last_out_ag(X, .(H, T))
U4_gaa(L, X, Last, last_out_ag(Last, LX)) → applast_out_gaa(L, X, Last)
U2_gaa(A, B, C, applast_out_gaa(D, B, C)) → goal_out_gaa(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND_IN_GGA(.(H, L1), L2, .(H, L3)) → APPEND_IN_GGA(L1, L2, L3)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APPEND_IN_GGA(.(L1), L2) → APPEND_IN_GGA(L1, L2)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
S2L_IN_GA(s(X), .(Y, Xs)) → S2L_IN_GA(X, Xs)
goal_in_gaa(A, B, C) → U1_gaa(A, B, C, s2l_in_ga(A, D))
s2l_in_ga(s(X), .(Y, Xs)) → U7_ga(X, Y, Xs, s2l_in_ga(X, Xs))
s2l_in_ga(0, []) → s2l_out_ga(0, [])
U7_ga(X, Y, Xs, s2l_out_ga(X, Xs)) → s2l_out_ga(s(X), .(Y, Xs))
U1_gaa(A, B, C, s2l_out_ga(A, D)) → U2_gaa(A, B, C, applast_in_gaa(D, B, C))
applast_in_gaa(L, X, Last) → U3_gaa(L, X, Last, append_in_gga(L, .(X, []), LX))
append_in_gga([], L, L) → append_out_gga([], L, L)
append_in_gga(.(H, L1), L2, .(H, L3)) → U6_gga(H, L1, L2, L3, append_in_gga(L1, L2, L3))
U6_gga(H, L1, L2, L3, append_out_gga(L1, L2, L3)) → append_out_gga(.(H, L1), L2, .(H, L3))
U3_gaa(L, X, Last, append_out_gga(L, .(X, []), LX)) → U4_gaa(L, X, Last, last_in_ag(Last, LX))
last_in_ag(X, .(X, [])) → last_out_ag(X, .(X, []))
last_in_ag(X, .(H, T)) → U5_ag(X, H, T, last_in_ag(X, T))
U5_ag(X, H, T, last_out_ag(X, T)) → last_out_ag(X, .(H, T))
U4_gaa(L, X, Last, last_out_ag(Last, LX)) → applast_out_gaa(L, X, Last)
U2_gaa(A, B, C, applast_out_gaa(D, B, C)) → goal_out_gaa(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
S2L_IN_GA(s(X), .(Y, Xs)) → S2L_IN_GA(X, Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
S2L_IN_GA(s(X)) → S2L_IN_GA(X)
From the DPs we obtained the following set of size-change graphs: